# 属性和方法按照能不能在类的外部直接访问,分为私有属性和公有属性.私有方法和私有方法
# 私有属性:  __属性名(变量名)   
# 公有属性:  属性名(变量名)

class Girl():
    # name,sex属于公有属性, __age属于私有属性
    def __init__(self, name, sex):
        self.name = name
        self.sex = sex
        # 比如女孩的年龄是秘密,不能再外面轻易的获取,这时候我们可以将其设置为私有属性
        self.__age = 18

    # 如何访问私有属性呢.一般情况下在类的内部设置对外开放的接口,通过条件判断等操作实现私有属性的访问
    def sayAge(self, boyFriend):
        if boyFriend == "欧阳":
            print(f"{self.name}偷偷的告诉{boyFriend}说:老娘今年{self.__age}了!")
        else:
            print("女孩的年龄是秘密,不知道吗?活该你单身,傻狗!")

    # 公有方法
    def say(self):
        print("帅哥,帮个忙呗!")

    # 私有方法
    def __kiss(self):
        print("接吻像触电一样!")

    # 在类的内部可以访问私有方法
    def thinkKiss(self, relationship):
        if relationship == "情侣":
            self.__kiss()
        else:
            print("不能随便kiss,小心中毒!")


girl = Girl("小红", "女")
# print(girl.name)
# print(girl.sex)
# print(girl.age)  # 将age设置为私有属性后,在外部不能直接访问了.

girl.say()
girl.sayAge("欧阳")
# girl.__kiss()   # 将kiss设置为私有放大后,在外部不能直接访问了.

girl.thinkKiss("陌生人")
girl.thinkKiss("情侣")

'''
私有属性:
    1.语法: 属性的前面 加上 __ 表示私有属性  例如: __age
    2.用法: 私有属性只能在类的内部访问,不能在类的外部访问.  可以在类的内部设置一个外部访问的接口,(这个接口一般会做各种条件判断,若满足,则可以访问私有属性)

私有方法:
    1.语法: 方法的前面 加上 __ 表示私有方法 例如: __kiss()
    2.用法: 私有方法只能在类的内部访问,不能在类的外部访问.  私有方法一般用于在类的内部实现某些功能,对于外部来说没有实质的意义
'''
